using System.ComponentModel;

namespace Domain.RBAC.Enums
{
    /// <summary>
    /// 通用状态枚举
    /// </summary>
    public enum CommonStatus
    {
        /// <summary>
        /// 禁用
        /// </summary>
        [Description("禁用")]
        Disabled = 0,

        /// <summary>
        /// 启用
        /// </summary>
        [Description("启用")]
        Enabled = 1
    }

    /// <summary>
    /// 数据权限范围枚举
    /// </summary>
    public enum DataScopeType
    {
        /// <summary>
        /// 全部数据权限
        /// </summary>
        [Description("全部数据")]
        All = 1,

        /// <summary>
        /// 本部门及下级部门数据权限
        /// </summary>
        [Description("本部门及下级")]
        DeptAndChild = 2,

        /// <summary>
        /// 仅本部门数据权限
        /// </summary>
        [Description("仅本部门")]
        Dept = 3,

        /// <summary>
        /// 仅本人数据权限
        /// </summary>
        [Description("仅本人")]
        Self = 4,

        /// <summary>
        /// 自定义部门数据权限
        /// </summary>
        [Description("自定义部门")]
        Custom = 5
    }

    /// <summary>
    /// 角色类型枚举
    /// </summary>
    public enum RoleType
    {
        /// <summary>
        /// 管理员角色
        /// </summary>
        [Description("管理员")]
        Admin = 1,

        /// <summary>
        /// 普通角色
        /// </summary>
        [Description("普通角色")]
        Normal = 2,

        /// <summary>
        /// 访客角色（只读）
        /// </summary>
        [Description("访客")]
        Guest = 3
    }

    /// <summary>
    /// 授权状态枚举
    /// </summary>
    public enum GrantStatus
    {
        /// <summary>
        /// 已撤销
        /// </summary>
        [Description("已撤销")]
        Revoked = 0,

        /// <summary>
        /// 已授权
        /// </summary>
        [Description("已授权")]
        Granted = 1
    }

    /// <summary>
    /// 权限类型枚举
    /// </summary>
    public enum PermissionType
    {
        /// <summary>
        /// 目录（一级菜单）
        /// </summary>
        [Description("目录")]
        Directory = 1,

        /// <summary>
        /// 菜单（二级或多级菜单）
        /// </summary>
        [Description("菜单")]
        Menu = 2,

        /// <summary>
        /// 按钮（页面操作按钮）
        /// </summary>
        [Description("按钮")]
        Button = 3,

        /// <summary>
        /// API接口
        /// </summary>
        [Description("接口")]
        Api = 4
    }

    /// <summary>
    /// 用户性别枚举
    /// </summary>
    public enum Gender
    {
        /// <summary>
        /// 未知
        /// </summary>
        [Description("未知")]
        Unknown = 0,

        /// <summary>
        /// 男性
        /// </summary>
        [Description("男")]
        Male = 1,

        /// <summary>
        /// 女性
        /// </summary>
        [Description("女")]
        Female = 2
    }

    /// <summary>
    /// 用户类型枚举
    /// </summary>
    public enum UserType
    {
        /// <summary>
        /// 内部员工
        /// </summary>
        [Description("内部员工")]
        Internal = 1,

        /// <summary>
        /// 外部用户
        /// </summary>
        [Description("外部用户")]
        External = 2,

        /// <summary>
        /// 系统用户
        /// </summary>
        [Description("系统用户")]
        System = 3
    }
}

